Evapotranspiration Module

History

current version 1.2 - 8th March 2023

version date comment
1.0 08/Jun/2021 Original code
1.1 27/Jan/2023 subroutine HargreavesSamaniModified added
1.2 08/Mar/2023 etEnergyBalanceGround

License

license: GNU GPL http://www.gnu.org/licenses/

Module Description

Module to compute evapotranspiration



Variables

Type Visibility Attributes Name Initial
integer(kind=short), public :: dtET

time step computation [s]

type(grid_real), public :: pe

potential evaporation rate [m/s]

type(grid_real), public :: pet

potential evapotranspiration rate [m/s]

type(grid_real), public :: pt

potential transpiration rate [m/s]

integer(kind=short), private, parameter :: ENERGY_BALANCE = 6
integer(kind=short), private, parameter :: ET_MODELS = 6
integer(kind=short), private, parameter :: FAO56_PENMAN_MONTEITH = 5
integer(kind=short), private, parameter :: HARGREAVES = 3
integer(kind=short), private, parameter :: HARGREAVES_MOD = 4
integer(kind=short), private, parameter :: PENMAN_MONTEITH = 1
integer(kind=short), private, parameter :: PRIESTLEY_TAYLOR = 2
logical, private :: compute_hargreaves = .FALSE.
integer(kind=short), private :: dtGridKc
integer(kind=short), private :: dtKc = 0
character(len=300), private :: filenameKc
integer(kind=short), private :: fileunitKc
integer(kind=short), private :: interpolationMethodKc
type(grid_integer), private :: kc_code_map

map of crop coefficient code

type(grid_real), private :: kc_map

crop coefficient map

type(ObservationalNetwork), private :: kc_stations

pseudo station to read kc time series values

integer(kind=short), private :: model

model to compute ET

integer(kind=short), private :: model_assignment

method to assign computation 1 = one method for the entire domain, 2 = a map with model codes

type(grid_integer), private :: model_map
integer(kind=short), private :: model_vector(ET_MODELS)

defines active models

type(DateTime), private :: tNewKc
type(DateTime), private :: tnewET
logical, private :: useCropCoefficient = .FALSE.

Subroutines

public subroutine CheckSpecificProperties(model, ini)

check properties for each ET model

Arguments

Type IntentOptional Attributes Name
integer(kind=short), intent(in) :: model
type(IniList), intent(in) :: ini

public subroutine ETinit(inifile, time)

Initialize evapotranspiration computation

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: inifile
type(DateTime), intent(in) :: time

public subroutine PETupdate(time)

Compute potential evapotranspiration

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time

public subroutine etEnergyBalanceGround(airTemp, netRad, rh, wind, fc, z, elevation, zws, zrhum, lai, srmin, pt, pe, pet)

Compute actual evapotranspiration from ground by solving energy balance Original code written by Chiara Corbari and Jacopo Martinelli

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: airTemp

air temperature (°C)

real(kind=float), intent(in) :: netRad

net radiawion (W/m2)

real(kind=float), intent(in) :: rh

air relative humidity (0-100)

real(kind=float), intent(in) :: wind

wind speed(m/s)

real(kind=float), intent(in) :: fc

fractional coverage by vegetation (0-1)

real(kind=float), intent(in) :: z

vegetation height (m)

real(kind=float), intent(in) :: elevation

terrain elevation (m a.s.l.)

real(kind=float), intent(in) :: zws

wind speed measurement heigth (m)

real(kind=float), intent(in) :: zrhum

relative humidity measurement heigth (m)

real(kind=float), intent(in) :: lai

leaf area index (m2/m2)

real(kind=float), intent(in) :: srmin

minimum stomatal resistance

real(kind=float), intent(out) :: pt

potential transpiration (from vegetation) (m/s)

real(kind=float), intent(out) :: pe

potential evaporation (from water or saturated soil) (m/s)

real(kind=float), intent(out) :: pet

potential evapotranspiration (m/s)

private subroutine FAO56PenmanMonteith(airTemp, netRad, netRadFAO, rh, wind, fc, elevation, zws, zrhum, lai, pt, pe, pet)

Compute potential evapotranspiration with FAO56 Penman-Monteith model for a reference grass "A hypothetical reference crop with an assumed crop height of 0.12 m, a fixed surface resistance of 70 s m-1 and an albedo of 0.23."

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: airTemp

air temperature [°C]

real(kind=float), intent(in) :: netRad

net radiation [W/m2]

real(kind=float), intent(in) :: netRadFAO

net radiation for reference vegetation, with albedo = 0.23 [W/m2]

real(kind=float), intent(in) :: rh

air relative humidity [0-100]

real(kind=float), intent(in) :: wind

wind speed [m/s]

real(kind=float), intent(in) :: fc

fractional coverage by vegetation [0-1]

real(kind=float), intent(in) :: elevation

terrain elevation [m a.s.l.]

real(kind=float), intent(in) :: zws

wind speed measurement heigth [m]

real(kind=float), intent(in) :: zrhum

relative humidity measurement heigth [m]

real(kind=float), intent(in) :: lai

leaf area index [m2/m2]

real(kind=float), intent(out) :: pt

potential transpiration (from vegetation) [m/s]

real(kind=float), intent(out) :: pe

potential evaporation (from water or saturated soil) [m/s]

real(kind=float), intent(out) :: pet

potential evapotranspiration [m/s]

private subroutine HargreavesSamani(time, Tavg, Tmax, Tmin, etRad, pet)

Compute potential evapotranspiration with Hargreaves Samani model at daily time scale

Read more…

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time

simulation time

real(kind=float), intent(in) :: Tavg

average daily temperature [°C]

real(kind=float), intent(in) :: Tmax

maximum daily temperature [°C]

real(kind=float), intent(in) :: Tmin

minimum daily temperature [°C]

real(kind=float), intent(in) :: etRad

extra terrestrial solar radiation [mm/day]

real(kind=float), intent(out) :: pet

potential evapotranspiration [m/s]

private subroutine HargreavesSamaniModified(time, Tavg, Tmax, Tmin, etRad, elevation, pet)

Compute potential evapotranspiration at daily time scale with Hargreaves Samani model modified by Ravazzani et al. (2012) to include an elevation correction factor

Read more…

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time

simulation time

real(kind=float), intent(in) :: Tavg

average daily temperature [°C]

real(kind=float), intent(in) :: Tmax

maximum daily temperature [°C]

real(kind=float), intent(in) :: Tmin

minimum daily temperature [°C]

real(kind=float), intent(in) :: etRad

extra terrestrial solar radiation [mm/day]

real(kind=float), intent(in) :: elevation

elevation above sea level [m]

real(kind=float), intent(out) :: pet

potential evapotranspiration [m/s]

private subroutine KcUpdate(time)

read new Kc values

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time

private subroutine PenmanMonteith(airTemp, netRad, rh, wind, fc, z, elevation, zws, zrhum, lai, srmin, pt, pe, pet)

Compute potential evapotranspiration with Penman-Monteith model

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: airTemp

air temperature [°C]

real(kind=float), intent(in) :: netRad

net radiawion [W/m2]

real(kind=float), intent(in) :: rh

air relative humidity [0-100]

real(kind=float), intent(in) :: wind

wind speed [m/s]

real(kind=float), intent(in) :: fc

fractional coverage by vegetation [0-1]

real(kind=float), intent(in) :: z

vegetation height [m]

real(kind=float), intent(in) :: elevation

terrain elevation [m a.s.l.]

real(kind=float), intent(in) :: zws

wind speed measurement heigth [m]

real(kind=float), intent(in) :: zrhum

relative humidity measurement heigth [m]

real(kind=float), intent(in) :: lai

leaf area index [m2/m2]

real(kind=float), intent(in) :: srmin

minimum stomatal resistance

real(kind=float), intent(out) :: pt

potential transpiration (from vegetation) [m/s]

real(kind=float), intent(out) :: pe

potential evaporation (from water or saturated soil) [m/s]

real(kind=float), intent(out) :: pet

potential evapotranspiration [m/s]

private subroutine PriestleyTaylor(airTemp, netRad, fc, elevation, pt, pe, pet)

Compute potential evapotranspiration with Priestley-Taylor model

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: airTemp

air temperature [°C]

real(kind=float), intent(in) :: netRad

net radiawion [W/m2]

real(kind=float), intent(in) :: fc

fractional coverage by vegetation [0-1]

real(kind=float), intent(in) :: elevation

terrain elevation [m a.s.l.]

real(kind=float), intent(out) :: pt

potential transpiration (from vegetation) [m/s]

real(kind=float), intent(out) :: pe

potential evaporation (from water or saturated soil) [m/s]

real(kind=float), intent(out) :: pet

potential evapotranspiration [m/s]